package com.hyou.springboot.base;

import java.io.Serializable;
import java.util.List;

/**
 * 支持分页的响应数据对象
 * 
 * @author FengChangshuo
 * @version 1.0.0 2018-11-09 09:50:20 初始创建
 */
public class PageInfoVO<T extends Serializable> extends BaseVO {

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -3072478467649943736L;
    
    /**
     * 总记录数
     */
    private long total;
    
    /**
     * 当前页
     */
    private int pageNum;
    
    /**
     * 每页的数量
     */
    private int pageSize;
    
    /**
     * 当前页的数量
     */
    private int size;
    
    /**
     * 总页数
     */
    private int pages;
    
    /**
     * 由于startRow和endRow不常用，这里说个具体的用法
     * 可以在页面中"显示startRow到endRow 共size条数据"
     * 当前页面第一个元素在数据库中的行号
     */
    private int startRow;
    
    /**
     * 当前页面最后一个元素在数据库中的行号
     */
    private int endRow;
    
    /**
     * 前一页
     */
    private int prePage;
    
    /**
     * 下一页
     */
    private int nextPage;
    
    /**
     * 是否为第一页
     */
    private boolean isFirstPage = false;
    
    /**
     * 是否为最后一页
     */
    private boolean isLastPage = false;
    
    /**
     * 是否有前一页
     */
    private boolean hasPreviousPage = false;
    
    /**
     * 是否有下一页
     */
    private boolean hasNextPage = false;
    
    /**
     * 所有导航页号
     */
    private int[] navigatepageNums;
    
    /**
     * 结果集
     */
    private List<T> list;

    /**
     * @return 总记录数
     */
    public long getTotal() {
        return this.total;
    }

    /**
     * @param total 总记录数
     */
    public void setTotal(long total) {
        this.total = total;
    }

    /**
     * @return 当前页
     */
    public int getPageNum() {
        return this.pageNum;
    }

    /**
     * @param pageNum 当前页
     */
    public void setPageNum(int pageNum) {
        this.pageNum = pageNum;
    }

    /**
     * @return 每页的数量
     */
    public int getPageSize() {
        return this.pageSize;
    }

    /**
     * @param pageSize 每页的数量
     */
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    /**
     * @return 当前页的数量
     */
    public int getSize() {
        return this.size;
    }

    /**
     * @param size 当前页的数量
     */
    public void setSize(int size) {
        this.size = size;
    }

    /**
     * @return 总页数
     */
    public int getPages() {
        return this.pages;
    }

    /**
     * @param pages 总页数
     */
    public void setPages(int pages) {
        this.pages = pages;
    }

    /**
     * @return 当前页面第一个元素在数据库中的行号
     */
    public int getStartRow() {
        return this.startRow;
    }

    /**
     * @param startRow 当前页面第一个元素在数据库中的行号
     */
    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }

    /**
     * @return 当前页面最后一个元素在数据库中的行号
     */
    public int getEndRow() {
        return this.endRow;
    }

    /**
     * @param endRow 当前页面最后一个元素在数据库中的行号
     */
    public void setEndRow(int endRow) {
        this.endRow = endRow;
    }

    /**
     * @return 前一页
     */
    public int getPrePage() {
        return this.prePage;
    }

    /**
     * @param prePage 前一页
     */
    public void setPrePage(int prePage) {
        this.prePage = prePage;
    }

    /**
     * @return 下一页
     */
    public int getNextPage() {
        return this.nextPage;
    }

    /**
     * @param nextPage 下一页
     */
    public void setNextPage(int nextPage) {
        this.nextPage = nextPage;
    }

    /**
     * @return 是否为第一页
     */
    public boolean isFirstPage() {
        return this.isFirstPage;
    }

    /**
     * @param isFirstPage 是否为第一页
     */
    public void setFirstPage(boolean isFirstPage) {
        this.isFirstPage = isFirstPage;
    }

    /**
     * @return 是否为最后一页
     */
    public boolean isLastPage() {
        return this.isLastPage;
    }

    /**
     * @param isLastPage 是否为最后一页
     */
    public void setLastPage(boolean isLastPage) {
        this.isLastPage = isLastPage;
    }

    /**
     * @return 是否有前一页
     */
    public boolean isHasPreviousPage() {
        return this.hasPreviousPage;
    }

    /**
     * @param hasPreviousPage 是否有前一页
     */
    public void setHasPreviousPage(boolean hasPreviousPage) {
        this.hasPreviousPage = hasPreviousPage;
    }

    /**
     * @return 是否有下一页
     */
    public boolean isHasNextPage() {
        return this.hasNextPage;
    }

    /**
     * @param hasNextPage 是否有下一页
     */
    public void setHasNextPage(boolean hasNextPage) {
        this.hasNextPage = hasNextPage;
    }

    /**
     * @return 所有导航页号
     */
    public int[] getNavigatepageNums() {
        return this.navigatepageNums;
    }

    /**
     * @param navigatepageNums 所有导航页号
     */
    public void setNavigatepageNums(int[] navigatepageNums) {
        this.navigatepageNums = navigatepageNums;
    }

    /**
     * @return 结果集
     */
    public List<T> getList() {
        return this.list;
    }

    /**
     * @param list 结果集
     */
    public void setList(List<T> list) {
        this.list = list;
    }
    
}
